# Qiyu_Right权限类的使用

祺佑框架定义了9个权限属性,如下图所示

UI表单,BLL层,权限类都有定义了这9个属性

属性 取值 说明
isAdd 逻辑型 .T.(默认),.F. 新增权限
isEdit 逻辑型 .T.(默认),.F. 编辑权限
isDel 逻辑型 .T.(默认),.F. 删除权限
isCheck 逻辑型 .T.(默认),.F. 审核权限
isKeep 逻辑型 .T.(默认),.F. 记账权限
isPrint 逻辑型 .T.(默认),.F. 打印权限
isUd1 逻辑型 .T.(默认),.F. 自定权限1
isUd2 逻辑型 .T.(默认),.F. 自定权限2
isUd3 逻辑型 .T.(默认),.F. 自定权限3

目前祺佑三层开发框架的权限有两种:

  1. 控制操作权限

    • 依据表单的操作权限.称之为模块权限 如操作员:王小二具有采购入库单的新增、修改、删除权限. 权限所控制的对象是采购入库单.
    • 依据表单所操作的数据字段属性. 称之为数据权限 如操作员:王小二具有采购入库单 部门编号为:01 的新增、修改、删除权限。 权限所控制部门编号=01 采购入库单的 新增、修改、删除。 也就是其它部门他不具有权限。可见数据权限比模块权限更为细分。
  2. 浏览数据权限 浏览权限:是对数据一部分拥有权限。比如王小二可以查看采购一部的所有入库单。

操作权限和浏览控件的表现

  1. 控制界面上控件的开闭 UI表单的控件的开闭由表单的权限属性如isAdd等来控制。
  2. 控制方法的调用成功与否。 BLL层的方法New Edit Delete Save 的调用分别受BLL相应的权限属性isAdd isEdit isDel 控制。 而余下的属性可以自行用于判断是否具有权限调用。

UI BLL层与Qiyu_RightManage权限类的配合 Qiyu_DataForm,Qiyu_DataEnvironment,Qiyu_Navigation中有定义oRight属性

当它们的oRight属性被赋于权限实例时,表单或BLL层的权限属性就由Qiyu_RightManage 实例来接管。 UI层由Qiyu_DataForm派生的qiyu_form_singcursor实现 BLL业务层由Qiyu_DataEnvironment的派生类实现 数据的浏览权限主要由导航类和DAL_PRG类来实现,其调用了权限类的 GetRightlist方法,返回权限条件

子类举例:

*--由父类派生一个权限操作类
Define Class QX_SJQX As Qiyu_RightManage Of Locfile("Qiyu_RightManager.prg")    
    *--勾子方法 用户自定义
    *--功能:设置权限属性.
    PROCEDURE GetRightStatus
    this.isadd=.f.
    this.isedit=.f.
    this.isdel =.f.
    EndProc     
    
EndDefine

*--在表单的init方法中
thisform.oright=NEWOBJECT("qx_sjqx","qx_sjqx.prg")
thisform.RightRefresh() &&权限刷新
*--thisform.oright.SetRightStatus(thisform) &&继承父类的SetRightStatus方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16